1. Field of the Invention
The invention relates to the field of performance optimization in a network of nodes. More particularly, the invention relates to performance in a network of wireless sensors, wherein nodes have limited resources and implement just-in-time (JIT) or operate in a JIT environment.
2. Description of the Related Art
In networks and computer science, networks of nodes with limited resources such as sensor networks and in particular wireless sensor networks (or WSNs) are known. The latter denote wireless networks of autonomous, spatially distributed sensors that typically monitor physical parameters, such as temperature, pressure or pollutants at different locations. WSNs are nowadays used in various applications, including industrial or environmental monitoring or traffic control. A typical multihop WSN Architecture is depicted in FIG. 1. Sensor nodes (N1, . . .. Nn) are each equipped with a radio transceiver or the like to transmit back to the gateway G or host system for data collection. Data can then be accessed from a personal computer (PC).
In the computer science field, just-in-time (or JIT) compilation, also called dynamic translation is also known. JIT relates to a technique for improving runtime performance of computer programs. It builds upon earlier concepts of runtime environments, namely bytecode compilation and dynamic compilation. It converts bytecode into native code at runtime prior to executing it natively. Hence, operands do not need to be reinterpreted each time they are met, as carried out by virtual machines. In addition, bytecode can be recompiled when necessary, as opposed to static compilation. JIT thus combines advantages of interpretation and static compilation. Several runtime environments, such as Microsoft's CLR (common language runtime) and most implementations of Java rely on JIT compilation.
Research in sensor networks has previously dealt with the ability to adapt to changing conditions, as noted in a paper by G. V. Yee, B. Shucker, J. Dunn, A. Sheth, and R. Han, entitled Just-in-time sensor networks, in Third Workshop on Embedded Networked Sensors (EmNets 2006), May 2006. This has resulted in the ability to dynamically change attributes such as routing paths, MAC protocols, program images, and duty cycling. As several sensor network optimizations cannot be accomplished through software changes alone, recent research has strived for more adaptability at the physical level by using automated deployment throughout the lifetime of a network instead of just in the initial phases such as runtime deployment solutions.
Possible optimizations and the adaptability of a sensor network with runtime deployments done in real-time were also considered. A system utilizing JIT deployment was for instance defined in the above paper as one where a heterogeneous set of sensor nodes may be deployed. JIT deployment is a scalability approach, where a relatively small and sparse core network can be extended with additional nodes on demand, thus increasing node density and network coverage.
Today, many embedded devices do not stand isolated but work cooperatively in networks to interact with their environment, such as in sensor networks, especially if connected wirelessly in an ad-hoc fashion. Such networks tend to be heterogeneous with most of nodes limited by scarce resources. Developing applications for such networks is therefore challenging, for the most part requiring programming close to the hardware and maintaining different code bases for all the different nodes used.
Furthermore, dynamically distributing, loading, and deleting applications is virtually impossible without introducing a higher level of abstraction that shields the application from hardware intrinsic. Such a layer of abstraction may be provided by a virtual machine or VM, which basically levels the underlying hardware from an application point of view. Yet, adding a VM interpreting bytecode can have serious impact on the execution performance. JIT compiling all bytecode during load time, or selected bytecode sequences during runtime, however, is generally challenging on embedded devices considering the limited resources available.